<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        //1. 创建Symbol
        let s = Symbol();
        // console.log(s, typeof s)
        //2. 
        let s2 = Symbol('尚硅谷')
        let s3 = Symbol('尚硅谷')
            // console.log(s2 === s3)

        //3.Symbol.for创建
        let s4 = Symbol.for('shangguigu')
            // let s5 = Symbol.for('shangguigu')
            // console.log(s4 === s5)
            //4.Symbol 不能与其他数据进行运算
            // let result = s > 100
            // let result = s + 100
            //Symbol创建对象属性
            //向对象中添加方法 up down 
            //方式一:
            // let game = {
            //     up: function() {},
            //     down: function() {},
            //     name: '俄罗斯方块'
            // }
            // let methods = {
            //         up: Symbol(),
            //         down: Symbol()
            //     }
            //     //给game扩展方法

        // game[methods.up] = function() {
        //     console.log('我可以改变形状')
        // }
        // game[methods.down] = function() {
        //     console.log('我可以向下降')
        // }
        // console.log(game)

        //方式二:(为对象添加Symbol类型的属性)
        // let youxi = {
        //     name: '狼人杀',
        //     [Symbol('say')]: function() {
        //         console.log('我可以发言')
        //     },
        //     [Symbol('zibao')]: function() {
        //         console.log('我可以自爆')
        //     }
        // }
        // console.log(youxi);

        //Symbol 内置属性
        // class Person {
        //     static[Symbol.hasInstance](param) {
        //         console.log(param);
        //         console.log('我被用来检测类型了');
        //         return false; //Symbol.hasInstance的作用: 自己去控制类型检测(如果内部返回的是true，那么整体结果就是true;如果内部返回的是false，那么整体结果就是false)
        //     }
        // }
        // let o = {};
        // console.log(o instanceof Person); //可以把instanceof前面的参数传递给这个方法,由你来决定
        //合并数组
        // const arr = [1, 2, 3]
        // const arr2 = [4, 5, 6]
        // arr2[Symbol.isConcatSpreadable] = false //数组不可展开
        // console.log(arr.concat(arr2));
    </script>
</body>

</html>